#include "widget.h"
#include "ui_widget.h"
#include <QKeyEvent>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    setWindowTitle("键盘按键事件示例");
    resize(400, 300);

    // 关键：强制窗口获取焦点，确保接收键盘事件
    setFocusPolicy(Qt::StrongFocus);
    // 2. 主动让窗口获得焦点（关键！）
    setFocus();
}

// // 重写键盘按下事件：当按键被按下时触发
// void Widget::KeyPressEvent(QKeyEvent *event)
// {
//     // 判断事件是否有效
//     if (event) {
//         // 获取按下的按键（使用Qt的按键枚举值）
//         int key = event->key();

//         // 输出提示信息（区分特殊按键和普通按键）
//         if (key == Qt::Key_Enter || key == Qt::Key_Return) {
//             qDebug() << "回车键被按下了";
//         } else if (key == Qt::Key_Escape) {
//             qDebug() << "ESC键被按下了";
//         } else if (key >= Qt::Key_A && key <= Qt::Key_Z) {
//             // 普通字母键（转换为大写字母输出）
//             qDebug() << QString("%1键被按下了").arg(QChar(key));
//         } else {
//             // 其他按键（直接输出按键枚举值的名称）
//             qDebug() << QString("%1键被按下了").arg(event->text());
//         }
//     }

//     // 调用父类的事件处理函数（确保默认行为正常，如窗口移动等）
//     QWidget::keyPressEvent(event);
// }


void Widget::KeyPressEvent(QKeyEvent* event)
{
    if(event->modifiers() == Qt::ControlModifier)
    {
        if(event->key() == Qt::Key_A)
        {
            qDebug() << "CTRL + A 被按下";
        }
    }
}
Widget::~Widget()
{
    delete ui;
}
